// 数组intervals表示若干个区间的集合，请合并所有重叠的区间，并返回一个不重叠的区间数组，该数组需要恰好原数组的所有区间

// 思路，先区间数组根据左端点进行排序，比较当前区间左端点和上一个区间的右端点
// 如果当前区间左端点大于上一个区间的右端点，直接push进结果数组
// 如果当前区间左端点小于等于上一个区间的右端点，比较当前区间右节点和上一个区间右端点的大小，更新上一个区间右端点的值

function merge(intervals) {
    intervals.sort((a, b) => a[0] - b[0])
    let ans = [intervals[0]] // 当前区间和结果数组中的最后一个区间比较
    for (let i = 1; i < intervals.length; i++) {
        if (intervals[i][0] > ans[ans.length - 1][1]) {
            ans.push(intervals[i])
        } else {
            ans[ans.length - 1][1] = Math.max(intervals[i][1], ans[ans.length - 1][1])
        }
    }
    return ans
}

let intervals = [[1, 3], [2, 6], [8, 10], [15, 18]]
console.log(merge(intervals))